﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using TTEngine;
using TTEngine.Graphics;
using TTEngine.Resource;
using IGLES = Silk.NET.OpenGLES.GL;
namespace TTEngine
{

    public static class API
    {
        public static IPlatform platform;
        public static IView view;//改一下逻辑，Window 是需要从View 获取的，如果获取不到就不能操作
        //如果是客户端项目，他一定程度可以绕过接口，所以甚至不需要这个接口
        //把input也改成走View获取
        //public static IGameWindow mainwindow;
        public static ILoader loader;
        public static IAudio audio;

    }
    public static class Runtime
    {
        //通过激活机制，减少传参压力
        [ThreadStatic]
        public static IGLES activeGL;
        //当前激活的Target 是 View 或者RenderTarget
        public static ITarget activeTarget;
        //当前激活的相机
        public static Camera activeCamera;


        static bool _inited = false;
        static Runtime()
        {
            //如果粗糙点，可以就这么干了
            //_defaultPackage.Apply();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="rgbapackcount">RGBA贴图PackGroup层数</param>
        /// <param name="alphapackcount">Alpha贴图PackGroup层数</param>
        //public static void InitDefaultResource(byte rgbapackcount = 4, byte alphapackcount = 4)
        //{
        //    if (_inited)
        //        return;


        //    InnerResource = new CommonResource();
        //    InnerResource.Init(ResourcePackage.Create(), rgbapackcount, alphapackcount);

        //    _inited = true;
        //}
        //public static TTEngine.Resource.CommonResource InnerResource
        //{
        //    get;
        //    private set;
        //}


    }

}
//Tt api 是一组最基础的功能接口
//他的设计目标是，精简，够用，全平台实现
//所以这些接口从某些角度看起来不太自然
//譬如
//Task<IImage> LoadImageAsync(DataOrAssetUrl data);
//Task<ITtfFontFamily> LoadTTFAsync(DataOrAssetUrl data);
//这是因为在某些平台，可以直接从url 加载出图像
//这在实现层加入了一些额外的东西，看起来不那么纯粹了。这并不重要，我们还是